package com.yh.service;

import com.yh.entity.Orderinfo;
import com.yh.vo.CustomPageAndNavigate;
import com.yh.vo.OrderVO;

import java.util.List;

/**
 * @author yuhuan
 * @date 2022/01/13
 */
public interface OrderService {
    /**
     * 查询所有的订单信息并分页
     *
     * @param pageNum  当前页
     * @param pageSize 页大小
     * @return 返回自定义的分页信息
     */
    public CustomPageAndNavigate findOrderAll(Integer pageNum, Integer pageSize);

    /**
     * 根据ID查找订单详情
     *
     * @param orderId 订单的ID
     * @return 返回订单的详细信息，包括订单实体，影片实体，场次详情
     */
    public OrderVO findOrderDetailById(String orderId);

    /**
     * 根据用户ID查询所有的订单详情
     *
     * @param userId 用户的ID
     * @return 返回订单详情的查询结果集
     */
    public List<OrderVO> findOrderDetailByUserId(String userId);

    /**
     * 创建订单
     *
     * @param orderVo 需要添加的订单信息
     * @return 返回创建成功后的订单信息
     */
    public OrderVO createOrder(OrderVO orderVo);

    /**
     * 根据ID删除订单信息（不会真正的删除订单，只是将订单的状态位标记为已删除）
     *
     * @param orderId 订单的ID
     * @return 返回的是响应状态码
     */
    public int deleteOrderById(String orderId);

    /**
     * 检查并释放过期订单占用的座位
     *
     * @return 无返回值
     */
    public void checkExpiredOrder();

    /**
     * 检查订单是否过期
     *
     * @param order 等待检查的订单
     * @return 被释放了座位的订单数量
     */
    public int orderCheck(Orderinfo order);
}
